/**
 * 写入文件
 * @param {string} fileName 文件名，包括后缀名
 * @param {Object | string} content 文件内容
 * @returns {void} 无返回值
 */

export function writeFile(fileName, content) {
  // 写入文件
  // 获取文件系统并定位到文件
  plus.io.resolveLocalFileSystemURL(
    "_doc/", // 定位到文档目录 "_doc": (String 类型 )应用私有文档目录
    function (directoryEntry) {
      // 检查文件是否存在，或者创建新文件
      directoryEntry.getFile(
        fileName,
        { create: true }, // 如果文件不存在则创建
        function (fileEntry) {
          // 创建文件写入器
          fileEntry.createWriter(
            function (writer) {
              // 写入内容
              writer.write(
                typeof content === "object" ? JSON.stringify(content) : content
              ); // 执行写入操作
              writer.onwrite = function () {
                console.log("File written successfully.");
              };
              writer.onerror = function (e) {
                console.error("Failed to write file: " + e.toString());
              };
            },
            function (e) {
              console.error("Failed to create writer: " + e.toString());
            }
          );
        },
        function (e) {
          console.error("Failed to get file: " + e.toString());
        }
      );
    },
    function (e) {
      console.error("Failed to resolve directory: " + e.toString());
    }
  );
}

/**
 * 追加写入文件
 * @param {string} fileName 文件名，包括后缀名
 * @param {Object | string} content 文件内容
 * @returns {void} 返回文件内容，对象类型
 */
export function addWriteFile(fileName, content) {
  // 追加写入文件
  // 读取文件

  plus.io.resolveLocalFileSystemURL(
    "_doc/",
    function (directoryEntry) {
      directoryEntry.getFile(
        fileName,
        { create: true },
        function (fileEntry) {
          fileEntry.createWriter(
            function (writer) {
              writer.seek(writer.length); // 移动到文件末尾
              writer.write(
                typeof content === "object" ? JSON.stringify(content) : content
              ); // 此处为示意，实际需处理为读取后追加
              writer.onwriteend = function () {
                console.log("内容追加成功");
              };
              writer.onerror = function (e) {
                console.error("追加写入失败: ", e);
              };
            },
            function (e) {
              console.error("创建文件写入器失败: ", e);
            }
          );
        },
        function (e) {
          console.error("获取文件条目失败: ", e);
        }
      );
    },
    function (e) {
      console.error("解析目录失败: ", e);
    }
  );
}
/**
 * 读取文件
 * @param {string} fileName 文件名，包括后缀名
 * @returns {Object} 返回文件内容，对象类型
 */
export function readFile(fileName) {
  // 读取文件
  plus.io.resolveLocalFileSystemURL(
    `_doc/${fileName}`,
    function (fileEntry) {
      fileEntry.file(
        function (file) {
          var reader = new plus.io.FileReader();
          reader.readAsText(file); // 以文本形式读取文件
          reader.onloadend = function (e) {
            console.log("Read as text successfully.", e.target.result);
            return typeof e.target.result === "object"
              ? e.target.result
              : JSON.parse(e.target.result); // 返回文件内容
          };
          reader.onerror = function (e) {
            console.error("Failed to read file: " + e.toString());
          };
        },
        function (e) {
          console.error("Failed to get file: " + e.toString());
        }
      );
    },
    function (e) {
      console.error("Failed to resolve file: " + e.toString());
    }
  );
}

/**
 * 删除文件
 * @param {string} fileName 文件名，包括后缀名
 * @returns {void} 无返回值
 */
export function deleteFile(fileName) {
  // 删除文件
  plus.io.resolveLocalFileSystemURL(
    `_doc/${fileName}`,
    { create: false }, // 不创建文件，只检查是否存在
    function (fileEntry) {
      fileEntry.remove(
        function () {
          console.log("File deleted successfully.");
        },
        function (e) {
          console.error("Failed to delete file: " + e.toString());
        }
      );
    },
    function (e) {
      if (e.code === 1) {
        // FileError.NOT_FOUND_ERR
        console.log("File does not exist.");
      } else {
        console.error("Failed to get file: " + e.toString());
      }
    }
  );
}
